/*
 * Tencent is pleased to support the open source community by making Tencent Shadow available.
 * Copyright (C) 2019 THL A29 Limited, a Tencent company.  All rights reserved.
 *
 * Licensed under the BSD 3-Clause License (the "License"); you may not use
 * this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 *     https://opensource.org/licenses/BSD-3-Clause
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */

package com.tencent.shadow.core.manager.installplugin;

import java.io.IOException;
import java.io.InputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

final class SafeZipInputStream extends ZipInputStream {
    SafeZipInputStream(InputStream stream) {
        super(stream);
    }

    public final ZipEntry getNextEntry() throws IOException {
        ZipEntry entry = super.getNextEntry();
        if (null != entry) {
            String name = entry.getName();
            if (null != name && (name.contains("../") || name.contains("..\\"))) {
                throw new SecurityException("非法entry路径:" + entry.getName());
            }
        }
        return entry;
    }

}